/**  
* @Title: Application.java
* @Package org.mtons.controller
* @Description: TODO
* @author ma jinjian  
* @date 2016年1月17日 下午5:55:03
* @version V1.0  
*/ 
package cn.net.mtons.web;

import org.apache.log4j.Logger;
import org.springframework.context.support.ApplicationObjectSupport;
import org.springframework.stereotype.Component;

/**
 * @ClassName: Application
 * @Description:  spring容器应用程序,可以直接从容器中获取bean,可用于factory模式
 * 注:不要在该类写任何逻辑性、业务性代码，该类只负责与spring容器交互
 * @author ma jinjian
 * @date 2016年1月17日 下午5:55:03
 *
 */
@Component("app")
public class Application extends ApplicationObjectSupport {

	private static Logger logger = Logger.getLogger("command");

	/**
	* @Title: getBean
	* @Description: 从spring容器中获取一个已存在的bean
	* @param @param name
	* @param @param clazz
	* @param @return
	* @return T 
	* @throws
	*/ 
	public <T> T getBean(String name, Class<T> clazz){
		logger.debug("从Spring容器中取得一个名为:"+name+"的Bean");
		return super.getApplicationContext().getBean(name, clazz);
	}
	
	/**
	* @Title: getBean
	* @Description: 从spring容器中获取一个已存在的bean
	* @param @param name
	* @param @return
	* @return Object 
	* @throws
	*/ 
	public Object getBean(String name){
		logger.debug("从Spring容器中取得一个名为:"+name+"的Bean");
		return super.getApplicationContext().getBean(name);
	}
	
	/**
	* @Title: createBean
	* @Description: 创建一个Bean
	* @param @param name
	* @param @param clazz
	* @param @return
	* @return T 
	* @throws
	*/ 
	public <T> T createBean(String name, Class<T> clazz){
		logger.debug("从Spring容器中创建名为:"+name+"的Bean");
		return getBean(name, clazz);
	}
}
